home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / STRINGS.SWG / 0038_"IF" Boolean processing.pas < prev    next >
Pascal/Delphi Source File  |  1993-09-26  |  3KB  |  90 lines

  1. {*****************************************************************************
  2.  * Function ...... CIF()
  3.  * Purpose ....... To return a character based on a boolean expression
  4.  * Parameters .... Exp        Boolean expression to evaluate
  5.  *                 tVar       Result if <Exp> is TRUE
  6.  *                 fVar       Result if <Exp> is FALSE
  7.  * Returns ....... <tVar> if <Exp> is TRUE, <fVar> if <Exp> is FALSE
  8.  * Notes ......... None
  9.  * Author ........ Martin Richardson
  10.  * Date .......... May 13, 1992
  11.  *****************************************************************************}
  12. FUNCTION CIF( Exp: BOOLEAN; tVar, fVar: CHAR ): CHAR; ASSEMBLER;
  13. ASM
  14.      TEST Exp, 1
  15.      JZ   @@1
  16.      MOV  AL, tVar
  17.      JMP  @@2
  18. @@1: MOV  AL, fVar
  19. @@2:
  20. END;
  21.  
  22. {*****************************************************************************
  23.  * Function ...... SIF()
  24.  * Purpose ....... To return a string based on a boolean expression
  25.  * Parameters .... Exp        Boolean expression to evaluate
  26.  *                 tVar       Result if <Exp> is TRUE
  27.  *                 fVar       Result if <Exp> is FALSE
  28.  * Returns ....... <tVar> if <Exp> is TRUE, <fVar> if <Exp> is FALSE
  29.  * Notes ......... None
  30.  * Author ........ Martin Richardson
  31.  * Date .......... May 13, 1992
  32.  *****************************************************************************}
  33. FUNCTION SIF( Exp: BOOLEAN; tVar, fVAR: STRING ): STRING; ASSEMBLER;
  34. ASM
  35.        PUSH DS
  36.        TEST Exp, 1
  37.        JZ   @@1
  38.        LDS  SI, tVar
  39.        JMP  @@2
  40. @@1:   LDS  SI, fVar
  41. @@2:   LES  DI, @Result
  42.        XOR  CH, CH
  43.        MOV  CL, BYTE PTR DS:[SI]
  44.        MOV  BYTE PTR ES:[DI], CL
  45.        INC  DI
  46.        INC  SI
  47.        CLD
  48.        REP  MOVSB
  49.        POP  DS
  50. END;
  51.  
  52. {*****************************************************************************
  53.  * Function ...... IIF()
  54.  * Purpose ....... To return an integer based on a boolean expression
  55.  * Parameters .... Exp        Boolean expression to evaluate
  56.  *                 tVar       Result if <Exp> is TRUE
  57.  *                 fVar       Result if <Exp> is FALSE
  58.  * Returns ....... <tVar> if <Exp> is TRUE, <fVar> if <Exp> is FALSE
  59.  * Notes ......... None
  60.  * Author ........ Martin Richardson
  61.  * Date .......... May 13, 1992
  62.  *****************************************************************************}
  63. FUNCTION IIF( Exp: BOOLEAN; tVar, fVar: LONGINT ): LONGINT; ASSEMBLER;
  64. ASM
  65.      TEST Exp, 1
  66.      JZ   @@1
  67.      MOV  AX, WORD PTR tVar[0]
  68.      MOV  DX, WORD PTR tVar[2]
  69.      JMP  @@2
  70. @@1: MOV  AX, WORD PTR fVar[0]
  71.      MOV  DX, WORD PTR fVar[2]
  72. @@2:
  73. END;
  74.  
  75. {*****************************************************************************
  76.  * Function ...... RIF()
  77.  * Purpose ....... To return a real based on a boolean expression
  78.  * Parameters .... Exp        Boolean expression to evaluate
  79.  *                 tVar       Result if <Exp> is TRUE
  80.  *                 fVar       Result if <Exp> is FALSE
  81.  * Returns ....... <tVar> if <Exp> is TRUE, <fVar> if <Exp> is FALSE
  82.  * Notes ......... None
  83.  * Author ........ Martin Richardson
  84.  * Date .......... May 13, 1992
  85.  *****************************************************************************}
  86. FUNCTION RIF( Exp : BOOLEAN; tVar, fVAR : REAL ) : REAL;
  87. BEGIN
  88.      IF Exp THEN RIF := tVAR ELSE RIF := fVar;
  89. END;
  90.